use crate::cljcell::clj_cell::CljCell;
use crate::built_in_functions::my_clojure_interp::{CljFunc, CljRecur, MyClojureInterp, CljFuncParam, CljFuncParamList, MyCljFunc, MyFuncHs, MyCljRecur};
use crate::built_in_functions::util::my_util;
use crate::built_in_functions::my_funs::MyFunctions;
use std::collections::HashMap;
use std::fmt;
use std::rc::Rc;

pub struct RustFuns;

impl RustFuns {

    /**
     * let 语句
     * */
    pub fn rs_println(interp: &MyClojureInterp, lst: Rc<CljCell>, func_hs: &MyFuncHs, clj_recur: &MyCljRecur, rs: Rc<CljCell>) {
        // println!("{:?}", func_hs);
        // println!("{:?}", "****************");
        match &*lst {
            CljCell::Symbol(name) => {
                let line: &String = &*name;
                let cc: &Rc<CljCell> = func_hs.get(line);
                println!("{:?}", (**cc).to_string());
            },
            CljCell::CljList(vs) => {
                let myrs:Rc<CljCell> = interp.clj_list(&vs, func_hs, clj_recur, rs.clone());
                println!("{:?}", (*myrs).to_string());
            },
            CljCell::Percent(name) => {},
            _ => {
                println!("{:?}", (*lst).to_string());
            },
        }
    }
}





































